#pragma once
#include <iostream>
#include <string>
#include <functional>

class SaveTask{
    //定义函数对象
    typedef std::function<void(const std::string&)> func_t;
public:
    //构造函数
    SaveTask()
    {}
    SaveTask(const std::string& message,func_t func)
    :_message(message),_func(func)
    {}
    void operator()(){
        _func(_message);
    }
private:
    std::string _message; //要保存的信息
    func_t _func; //执行保存任务的回调函数
};

void Save(const std::string& message)
{
    //以追加方式打开文件
    const std::string target="./log.txt";
    FILE* fp=fopen(target.c_str(),"a+");
    //防止打开失败
    if(!fp)
    {
        std::cerr<<"fopen error!"<<std::endl;
        return;
    }
    //保存日志到磁盘
    fprintf(fp,"%s\n",message.c_str());
    fclose(fp);
}